/*
 * UMediaMuxer.h
 *
 *  Created on: 2020年4月29日
 *      Author: chuanjiang.zh
 */

#ifndef UMEDIAMUXER_H_
#define UMEDIAMUXER_H_

#include "UMediaSource.h"
#include <functional>

class DLLEXPORT UMediaMuxer
{
public:
	typedef std::function< void (UMediaPacket& pkt) >	Sink;

public:

	virtual ~UMediaMuxer() {}

	virtual bool open(const UMediaFormat& fmt) =0;

	virtual void close() =0;

	virtual bool isOpen() =0;


	virtual bool getOutFormat(UMediaFormat& fmt) =0;

	virtual bool input(UMediaPacket& pkt) =0;

	virtual void setSink(Sink sink) =0;

    virtual const char* getName() = 0;

	virtual void flush() {};


};


#endif /* UMEDIAMUXER_H_ */
